package com.faxon.leetcode.b;

import org.junit.Test;

/**
 * @author Faxon
 * @version 1.0
 * @date 2020-04-12 16:57
 * 14.最长公共前缀
 * 编写一个函数来查找字符串数组中的最长公共前缀。
 * <p>
 * 如果不存在公共前缀，返回空字符串 ""。
 * <p>
 * 示例 1:
 * <p>
 * 输入: ["flower","flow","flight"]
 * 输出: "fl"
 * 示例 2:
 * <p>
 * 输入: ["dog","racecar","car"]
 * 输出: ""
 * 解释: 输入不存在公共前缀。
 * 说明:
 * <p>
 * 所有输入只包含小写字母 a-z 。
 **/
public class LeetCode14 {

    public String longestCommonPrefix(String[] strs) {
        if (strs.length == 0) {
            return "";
        }
        if (strs.length == 1) {
            return strs[0];
        }
        String s = strs[0];
        int len = 0;
        boolean flag = true;
        while (flag) {
            len++;
            if (len > s.length()) {
                return s.substring(0, --len);
            }
            String substring = s.substring(0, len);
            for (int i = 1; i < strs.length; i++) {
                if (!strs[i].startsWith(substring)) {
                    flag = false;
                    len--;
                    break;
                }
            }
        }
        return s.substring(0, len);
    }

    @Test
    public void testLongestCommonPrefix() {
//        String[] strs = new String[]{"flower", "flow", "flight"};
//        String[] strs = new String[]{"dog","racecar","car"};
        String[] strs = new String[]{"", ""};
        String s = longestCommonPrefix(strs);
        System.out.println(s);
    }
}
